/************************************************************************
 * Author: Murat Bicer, Efe Yardimci
 * File: cf_ext.idl
 * Description: CF Extensions:
 *				Event types used for sending/receiving events by CF components
 *				See SCA 2.2 specification page 3-14 for more details
 * Date: 07/06/04
 ************************************************************************/
#ifndef __CF_EXT_DEFINED
#define __CF_EXT_DEFINED

#include "cf.idl"
#include "TAO/orbsvcs/orbsvcs/CosEventComm.idl"
#include "TAO/orbsvcs/orbsvcs/CosEventChannelAdmin.idl"

module MC {

interface DomainManager:CF::DomainManager,CosEventComm::PushConsumer, CosEventComm::PushSupplier {
	exception EventChannelAlreadyCreated {
	};

	exception InvalidEventChannelEntry {
	};
	void registerSupplierWithEventChannel(in Object registeringObject,
										  in string registeringId,
										  in string eventChannelName)
  		raises (CF::InvalidObjectReference, 
				CF::DomainManager::InvalidEventChannelName,
				CF::DomainManager::AlreadyConnected);

	void unregisterSupplierFromEventChannel(in string unregisteringId,
											in string eventChannelName)
		raises (CF::DomainManager::InvalidEventChannelName, 
				CF::DomainManager::NotConnected);
	
	void createEventChannel(in string eventChannelName)
		raises (EventChannelAlreadyCreated);

	void destroyEventChannel(in string eventChannelName)
 		raises (InvalidEventChannelEntry);
	
	CosEventChannelAdmin::EventChannel getEventChannel(in string eventChannelName)
 		raises (InvalidEventChannelEntry);

	CosEventChannelAdmin::ProxyPushConsumer getProxyPushConsumer(in string eventChannelName,
															 	 in string registeringId)
 		raises (InvalidEventChannelEntry);

	CosEventChannelAdmin::ProxyPushSupplier getProxyPushSupplier(in string eventChannelName,
															 	 in string registeringId)
 		raises (InvalidEventChannelEntry);
};

interface ApplicationFactory:CF::ApplicationFactory,CosEventComm::PushSupplier {
};

interface Application:CF::Application,CosEventComm::PushSupplier {
	string longIdentifier();
};

}; //module MC

#endif //__CF_EXT_DEFINED
